The migration away from monolithic, shrink-wrapped application programs continues unabated. A current focus in application development is upon “cloud computing,” wherein a user's computing device need not even store or maintain a copy of an application program in order to run it. Instead, the application is loaded from a remote location, perhaps across the Internet, an intranet or some other network. Data manipulated via the application may also be maintained remote from the computing device.
Cloud computing may free a user from being limited to using only those applications installed on his computing device, but is not a cure-all for computer users. For example, a user must know what application or applications he wishes to access and his device may need to be specifically configured to access them. He cannot easily discover new applications useful for a given task at hand, particularly in an environment in which a large number of applications are offered with little guidance on when or how to use them.
Specifically, typical cloud computing environments do not support in-line discovery of a different application, or composition of a new application, while performing a given task in a given application. Thus, discovery that a previously unknown or unused program works well with another is often left to happenstance.
Even if a user discovers that one program works well with another in terms of sharing data or producing a result that is better or greater than what is produced by each program operating separately, he cannot group or associate them as a package so as to readily invoke their combined functionality again in the future, or easily share his discovery with another user except by describing to the other user how to replicate his discovery.